﻿var tabRow;                                             // Tab을 가지고 있는 객체
var divMain;                                            // iFrame을 가지고 있는 객체
var titleMode;                                          // 현재모드를 나타내는 타이틀 이미지객체
var menuCnt;                                            // 현재 생성된 메뉴 count을 가지고 있는 전역변수
var currentScrID     = "";                              // 현재 화면번호를 가지고 있는 전역변수
var selectedScrID    = "";                              // 선택된 화면번호를 가지고 있는 전역변수
var selectedTopID    = "";                              // 가장 상위의 화면번호를 가지고 있는 전역변수
var isClicked_MDI    = false;                           // MDI 가 클릭된 상태인지를 나타내는 전역변수
var isTitleView      = false;                           // 타이틀 보기 모드인지 true, 화면번호 보기 모드인지 false
var pop_MouseLeftPan = window.createPopup();			// 왼쪽 메뉴 보이는 팝업객체
var pop_MouseTooltip = window.createPopup();  			// Tab의 거래명 보이는 팝업객체
var MaxMDI           = 7;			                    // 탭의 최대 갯수
var MaxTextByte      = 10;                              // 탭의 text 최대 byte수
var LimitPattern     = "…";                             // 탭의 text 뒤에 붙는 패턴
var isOnLoad_MDI     = false;                           // MDI 가 로드 되었는지를 나타내는 전역변수
var debug_mode       = false;                           // 디버깅 모드를 나타내는 변수

/**
 * 초기화 메소드
 */
function menuInit()
{

	tabRow		 = document.getElementById('TR_TAB');
	titleMode    = document.getElementById('titleMode');
	divMain 	 = document.getElementById('IBS_MAIN');
	deleteAllTab();
	menuCnt 	 = 0;
	isOnLoad_MDI = true;
}

/**
 * IFRAME 초기화
 */
function initIframe()
{
	for (var i = 0;  i < MaxMDI;  i++)
	{
		document.write("<IFRAME frameBorder='1' width='10%' scrolling='auto' height='10%'></IFRAME>");
	}
}

/**
 * frame 객체를 구하는 함수를 CallByReference 방식으로 호출한다.
 * @param   arrayObj   : 배열객체
 */
function fnGetFrameCallByReferenceMdi(arrayObj)
{
	// arrayObj[0] : result String - output parameter
	// arrayObj[1] : target String - input  parameter
	// arrayObj[2] : frame  String - output parameter
	
	var iMaxFrameHierarchy = 100;
	if (arrayObj[1] == null  ||  arrayObj[1] == "")
	{
		arrayObj[0] = "notFound";
		return;
	}
	if (top.frames[arrayObj[1]] == null)
	{
		var strFrames = "frames[arrayObj[1]]";
		var bFindFrame = false;
		
		for (var iFrameIndex = 0;  iFrameIndex < iMaxFrameHierarchy;  iFrameIndex++)
		{
			strFrames = "parent." + strFrames;
			if (eval(strFrames) != null)
			{
				bFindFrame = true;
				break;
			}
		}
		
		if (bFindFrame == false)
		{
			arrayObj[0] = "notFound";			
		}
		else
		{
			arrayObj[0] = "foundFromParent";
			arrayObj[2] = strFrames;
		}
	}
	else
	{
		arrayObj[0] = "foundFromTop";
	}
}

/**
 * document 객체를 구하는 함수를 CallByReference 방식으로 호출한다.
 * @param   arrayObj   : 배열객체
 */
function fnGetDocumentCallByReferenceMdi(arrayObj)
{
	// arrayObj[0] : result    String - output parameter
	// arrayObj[1] : target    String - input  parameter
	// arrayObj[2] : document  String - output parameter
	
	var iMaxFrameHierarchy = 100;
	if (arrayObj[1] == null  ||  arrayObj[1] == "")
	{
		arrayObj[0] = "notFound";
		return;
	}	
	
	var strFrames = "document.all." + arrayObj[1];
	var strDocuments = "document";
	var bFindFrame = false;
	
	for (var iFrameIndex = 0;  iFrameIndex < iMaxFrameHierarchy;  iFrameIndex++)
	{
		strFrames = "parent." + strFrames;
		strDocuments = "parent." + strDocuments;
		if (eval(strFrames) != null)
		{
			bFindFrame = true;
			break;
		}
	}
	
	if (bFindFrame == false)
	{
		arrayObj[0] = "notFound";
	}
	else
	{
		arrayObj[0] = "foundFromParent";
		arrayObj[2] = strDocuments;
	}	
}

/**
 * 탭 추가(페이지에서 호출)
 * @param   scrID      : 거래코드
 * @param   strParam   : 파라메터
 */ 
 var __menu__ID ='';
function makeIFramePage(scrID, strParam)
{
	iajax.openSync("/GetMenuNameAndUpperMenuId.do?");
	iajax.addParam("MENU_GROUP_ID", "IBS_R_MENU");
	iajax.addParam("UPPER_MENU_ID", "");
	iajax.addParam("MENU_LEVEL",    "");
  	iajax.addParam("MENU_ID",       scrID);
	iajax.addParam("preViewMode",   "preView");
	iajax.addParam("callFrom",      "LEFT_MENU");
  	iajax.send();
  	__menu__ID  = scrID;
  	var strMENU_ID        = scrID;
  	var strFULL_PATH      = iajax.getValue("FULL_PATH")      == null ? "" : iajax.getValue("FULL_PATH");
  	var strMENU_NAME      = iajax.getValue("MENU_NAME")      == null ? "" : iajax.getValue("MENU_NAME");
  	var strUPPER_MENU_ID  = iajax.getValue("UPPER_MENU_ID")  == null ? "" : iajax.getValue("UPPER_MENU_ID");
  	var strUPPER2_MENU_ID = iajax.getValue("UPPER2_MENU_ID") == null ? "" : iajax.getValue("UPPER2_MENU_ID");
  	var strUPPER3_MENU_ID = iajax.getValue("UPPER3_MENU_ID") == null ? "" : iajax.getValue("UPPER3_MENU_ID");
  	var strBRCD = iajax.getValue("BRCH_CD");  
  	var strUPPER4_MENU_ID = "";
  	var strUPPER5_MENU_ID = "";
  	var strUPPER6_MENU_ID = "";
  	
  	
	if (strFULL_PATH != "")
	{
		if (strFULL_PATH.indexOf('?') == -1)
		{
			strFULL_PATH = strFULL_PATH + "?menuid=" + strMENU_ID;
		}
		else
		{
			strFULL_PATH = strFULL_PATH + "&menuid=" + strMENU_ID;
		}
	}
	
	strFULL_PATH = strFULL_PATH + (strParam == null ? "" : strParam);
  	
  	  	
  	var fraReference;
	var strTargetName = "";
	
	if (iajax.getValue("LAYOUT_TYPE") == iajax.getValue("CODE__LAYOUT_TYPE_TOP_LEFT__CODE")   ||  
	    iajax.getValue("LAYOUT_TYPE") == iajax.getValue("CODE__LAYOUT_TYPE_TOP_RIGHT__CODE")  ||
	    iajax.getValue("LAYOUT_TYPE") == iajax.getValue("CODE__LAYOUT_TYPE_LEFT__CODE")       ||
	    iajax.getValue("LAYOUT_TYPE") == iajax.getValue("CODE__LAYOUT_TYPE_RIGHT__CODE"))
	{			                                                                           
		strTargetName = (iajax.getValue("TOP_MENU_TARGET") == null  ||  iajax.getValue("TOP_MENU_TARGET") == "") ? "fraTop" : iajax.getValue("TOP_MENU_TARGET");
	}
	else
	{
		strTargetName = (iajax.getValue("LEFT_MENU_TARGET") == null  ||  iajax.getValue("LEFT_MENU_TARGET") == "") ? "fraLeft" : iajax.getValue("LEFT_MENU_TARGET");
	}
	
	
	var arrayObj = new Array();
	
	arrayObj[0] = "";                  // result String - output parameter
	arrayObj[1] = strTargetName;       // target String - input  parameter
	arrayObj[2] = "";                  // frame  String - output parameter
	
	// frame 객체를 구하는 함수를 CallByReference 방식으로 호출한다.
	fnGetFrameCallByReferenceMdi(arrayObj);
	if (arrayObj[0] == "notFound")
	{
		fraReference = null;
	}
	else if (arrayObj[0] == "foundFromParent")
	{
		fraReference = eval(arrayObj[2]);
	}
	else if (arrayObj[0] == "foundFromTop")
	{
		fraReference = top.frames[arrayObj[1]];
	}
			
	if (fraReference != null)
	{
		// 최상위 메뉴의 ID
		var strTOP_MENU_ID = "";
		
		for (var i = 6;  i >= 1;  i--)
		{
			if (i > 1)
			{
				if (eval("strUPPER" + i + "_MENU_ID") != "")
				{
					strTOP_MENU_ID = eval("strUPPER" + i + "_MENU_ID");
					break;
				}
			}
			else
			{
				if (strUPPER_MENU_ID != "")
				{
					strTOP_MENU_ID = strUPPER_MENU_ID;
					break;
				}
			}
		}
		
		if (strTOP_MENU_ID != null  &&  strTOP_MENU_ID != "")
		{
			var objTREE = fraReference.findTREE__MENU_ID(fraReference.arrayTREE, strTOP_MENU_ID);
	
			selectedScrID = strMENU_ID;				
			
			fraReference.document.frmList.showMdiBody.value = "true";
	
			
			isClicked_MDI = "true";
	
			fraReference.toggle(objTREE[1]);
			
			isClicked_MDI = "false";
			
			
			selectedTopID = strTOP_MENU_ID;
			
			fraReference.document.frmList.showMdiBody.value = "false";
	
	
			makeIFrameMenu(strMENU_ID, strMENU_NAME, strFULL_PATH, strUPPER_MENU_ID, strUPPER2_MENU_ID, strUPPER3_MENU_ID, strUPPER4_MENU_ID, strUPPER5_MENU_ID, strUPPER6_MENU_ID);
			return true;
		}
		else
		{   

			iajax.openSync("CmnMenuID.do?"); 
			iajax.addParam("MENU_ID", __menu__ID);
			iajax.send();
			var strNewMENU_ID   = iajax.getValue("MENU_ID"); 
			makeIFramePage_1(strNewMENU_ID, strParam);
			return false;
		}
	}
}


function makeIFramePage_1(scrID, strParam)
{
	iajax.openSync("/GetMenuNameAndUpperMenuId.do?");
	iajax.addParam("MENU_GROUP_ID", "IBS_R_MENU");
	iajax.addParam("UPPER_MENU_ID", "");
	iajax.addParam("MENU_LEVEL",    "");
  	iajax.addParam("MENU_ID",       scrID);
	iajax.addParam("preViewMode",   "preView");
	iajax.addParam("callFrom",      "LEFT_MENU");
  	iajax.send();
  	
  	var strMENU_ID        = scrID;
  	var strFULL_PATH      = iajax.getValue("FULL_PATH")      == null ? "" : iajax.getValue("FULL_PATH");
  	var strMENU_NAME      = iajax.getValue("MENU_NAME")      == null ? "" : iajax.getValue("MENU_NAME");
  	var strUPPER_MENU_ID  = iajax.getValue("UPPER_MENU_ID")  == null ? "" : iajax.getValue("UPPER_MENU_ID");
  	var strUPPER2_MENU_ID = iajax.getValue("UPPER2_MENU_ID") == null ? "" : iajax.getValue("UPPER2_MENU_ID");
  	var strUPPER3_MENU_ID = iajax.getValue("UPPER3_MENU_ID") == null ? "" : iajax.getValue("UPPER3_MENU_ID");
  	var strBRCD = iajax.getValue("BRCH_CD");  
  	var strUPPER4_MENU_ID = "";
  	var strUPPER5_MENU_ID = "";
  	var strUPPER6_MENU_ID = "";
  	
  	
	if (strFULL_PATH != "")
	{
		if (strFULL_PATH.indexOf('?') == -1)
		{
			strFULL_PATH = strFULL_PATH + "?menuid=" + strMENU_ID;
		}
		else
		{
			strFULL_PATH = strFULL_PATH + "&menuid=" + strMENU_ID;
		}
	}
	
	strFULL_PATH = strFULL_PATH + (strParam == null ? "" : strParam);
  	
  	  	
  	var fraReference;
	var strTargetName = "";
	
	if (iajax.getValue("LAYOUT_TYPE") == iajax.getValue("CODE__LAYOUT_TYPE_TOP_LEFT__CODE")   ||  
	    iajax.getValue("LAYOUT_TYPE") == iajax.getValue("CODE__LAYOUT_TYPE_TOP_RIGHT__CODE")  ||
	    iajax.getValue("LAYOUT_TYPE") == iajax.getValue("CODE__LAYOUT_TYPE_LEFT__CODE")       ||
	    iajax.getValue("LAYOUT_TYPE") == iajax.getValue("CODE__LAYOUT_TYPE_RIGHT__CODE"))
	{			                                                                           
		strTargetName = (iajax.getValue("TOP_MENU_TARGET") == null  ||  iajax.getValue("TOP_MENU_TARGET") == "") ? "fraTop" : iajax.getValue("TOP_MENU_TARGET");
	}
	else
	{
		strTargetName = (iajax.getValue("LEFT_MENU_TARGET") == null  ||  iajax.getValue("LEFT_MENU_TARGET") == "") ? "fraLeft" : iajax.getValue("LEFT_MENU_TARGET");
	}
	
	
	var arrayObj = new Array();
	
	arrayObj[0] = "";                  // result String - output parameter
	arrayObj[1] = strTargetName;       // target String - input  parameter
	arrayObj[2] = "";                  // frame  String - output parameter
	
	// frame 객체를 구하는 함수를 CallByReference 방식으로 호출한다.
	fnGetFrameCallByReferenceMdi(arrayObj);
	if (arrayObj[0] == "notFound")
	{
		fraReference = null;
	}
	else if (arrayObj[0] == "foundFromParent")
	{
		fraReference = eval(arrayObj[2]);
	}
	else if (arrayObj[0] == "foundFromTop")
	{
		fraReference = top.frames[arrayObj[1]];
	}
			
	if (fraReference != null)
	{
		// 최상위 메뉴의 ID
		var strTOP_MENU_ID = "";
		
		for (var i = 6;  i >= 1;  i--)
		{
			if (i > 1)
			{
				if (eval("strUPPER" + i + "_MENU_ID") != "")
				{
					strTOP_MENU_ID = eval("strUPPER" + i + "_MENU_ID");
					break;
				}
			}
			else
			{
				if (strUPPER_MENU_ID != "")
				{
					strTOP_MENU_ID = strUPPER_MENU_ID;
					break;
				}
			}
		}
		
		if (strTOP_MENU_ID != null  &&  strTOP_MENU_ID != "")
		{
			var objTREE = fraReference.findTREE__MENU_ID(fraReference.arrayTREE, strTOP_MENU_ID);
	
			selectedScrID = strMENU_ID;				
			
			fraReference.document.frmList.showMdiBody.value = "true";
	
			
			isClicked_MDI = "true";
	
			fraReference.toggle(objTREE[1]);
			
			isClicked_MDI = "false";
			
			
			selectedTopID = strTOP_MENU_ID;
			
			fraReference.document.frmList.showMdiBody.value = "false";
	
	
			makeIFrameMenu(strMENU_ID, strMENU_NAME, strFULL_PATH, strUPPER_MENU_ID, strUPPER2_MENU_ID, strUPPER3_MENU_ID, strUPPER4_MENU_ID, strUPPER5_MENU_ID, strUPPER6_MENU_ID);
			return true;
		}
		else
		{
  			
			alert("이동 할 수 있는 메뉴가 아닙니다.");
			return false;
		}
	}
}





/**
 * 탭 추가
 * @param   scrID   : 거래코드
 * @param   scrDesc : 거래명
 * @param   src     : URL
 * @param   scrID2  : 메뉴 2레벨
 * @param   scrID3  : 메뉴 3레벨
 * @param   scrID4  : 메뉴 4레벨
 */
function makeIFrameMenu(scrID, scrDesc, src, scrID2, scrID3, scrID4)
{
	if (isOnLoad_MDI == false)
	{
		return;
	}

	if (src == ' '  ||  src.length < 2)
	{
		src = "/index.html";
	}

	Js_chgTargetName();

	//이미 열어져있다면
	if (isExistTab(scrID))
	{
		var obj = getExistiFrame(scrID);

		if (obj.src != src) //현재타스크가 파라미터의 타스크와 다를 경우
		{
			obj.src = src;
			obj.srcText = src;
		}

		if (currentScrID == scrID)
			focusTab(scrID, scrID2, scrID3, scrID4, true, false);
		else
			focusTab(scrID, scrID2, scrID3, scrID4, false, false);

		return;
	}
	else
	{
		//
	}

	if (menuCnt >= MaxMDI)
	{
		Js_autoDeleteTab();
	}

	makeTabMenu(scrID, scrDesc, scrID2, scrID3, scrID4);	    //탭버튼

	makeIFrame(scrID, src);                                     //탭화면

	focusTab(scrID, scrID2, scrID3, scrID4, false, true);       //해당 탭 포커스

	menuCnt++;
}

/*
 * 탭에 해당되는 화면 열기
 * @param   scrID
 * @param   src
 */
function makeIFrame(scrID, src)
{
	var iframe = getCloseiFrame();

	iframe.style.width  = "100%";
	iframe.style.height = "100%";
	iframe.id           = scrID;
	iframe.name         = "MainFrm" + scrID;
	iframe.frameBorder  = 0;
	iframe.scrolling    = 'auto';
	iframe.style.zIndex = 0;
	iframe.src          = src;
	iframe.srcText      = src;
}

/*
 * 탭버튼 추가

 * @param   scrID
 * @param   scrDesc
 * @param   scrID2
 * @param   scrID3
 * @param   scrID4
 */
function makeTabMenu(scrID, scrDesc, scrID2, scrID3, scrID4)
{
	try
	{
		if (tabRow == undefined)
		{
			tabRow = TR_TAB;
		}

		var newTd = tabRow.insertCell(-1);
		tabRow.normalize();
		newTd.id       = scrID;
		newTd.id2      = scrID2;
		newTd.id3      = scrID3;
		newTd.id4      = scrID4;
		newTd.isFocus  = false;
		newTd.lock     = "N";
		newTd.menuDesc = scrDesc;

		if (scrID2 == undefined  ||  scrID2 == null)
		{
			newTd.leftUrl = location.search;
		}
		else
		{
			//
		}

		//탭의 디자인
		if (isTitleView)
		{
			var table = document.all.TAB_TABLE.cloneNode(true);
			table.style.visibility       = 'visible';
			table.style.display          = "inline";
			table.id                     = "TAB_" + scrID;
			table.all.TAB_NAME.innerText = limitLength(scrID);

			newTd.appendChild(table);
		}
		else
		{
			var table = document.all.TAB_TABLE.cloneNode(true);
			table.style.visibility       = 'visible';
			table.style.display          = "inline";
			table.id                     = "TAB_" + scrID;
			table.all.TAB_NAME.innerText = limitLength(scrDesc);

			newTd.appendChild(table);
		}

		newTd.onclick             = focusTabEvt;
		newTd.oncontextmenu       = Js_showMouseLeftMenu;
		newTd.style.verticalAlign = "middle";
		newTd.style.cursor        = "hand";

		newTd.onmouseover = Js_showTooltip;
		newTd.onmouseout  = Js_hideTooltip;

		Js_AutoTabStyle(scrID);
	}
	catch (e)
	{
		//
	}
}

/*
 * 현재 열려있는 탭화면을 리턴하는 메소드
 * @param   scrID
 */
function getExistiFrame(scrID)
{
	for (var i = 0;  i < divMain.children.length;  i++)
	{
		if (divMain.children[i].id == "")
			continue;

		//첫번째 열려있는 화면
		if (scrID == "")
		{
			return divMain.children[i];
		}
		//일치 되는 화면
		else if (divMain.children[i].id == scrID)
		{
			return divMain.children[i];
		}
	}
}

/*
 * 첫번째 닫혀있는 프레임을 리턴하는 메소드
 */
function getCloseiFrame()
{
	for (var i = 0;  i < divMain.children.length;  i++)
	{
		if (divMain.children[i].id == "")
		{
			return divMain.children[i];
		}
	}
}

/*
 * 현재 선택된 탭을 찾는다.
 * @param   scrID
 */
function getExistTab(scrID)
{
	try
	{
		for (var i = 0;  i < tabRow.cells.length;  i++)
		{
			//첫번째 열려있는 화면
			if (scrID == "")
			{
				return tabRow.cells[i];
			}
			//일치 되는 화면
			else if (tabRow.cells[i].id == scrID)
			{
				return tabRow.cells[i];
			}
		}
	}
	catch (e)
	{
		//
	}
}

/*
 * 탭이 열려있는지 닫혀있는지 조사한다.
 * @param   scrID
 */
function isExistTab(scrID)
{
	try
	{
		for (var i = 0;  i < tabRow.cells.length;  i++)
		{
			if (tabRow.cells[i].id == scrID)
				return true;
		}
	}
	catch (e)
	{
		//
	}

	return false;
}

/*
 * 탭을 눌렀을때
 */
function focusTabEvt()
{
	var fraTop  = frames["fraTop"];

	if (fraTop != null)
	{

		var objTREE = fraTop.findTREE__MENU_ID(fraTop.arrayTREE, ((this.id4 == null  ||  this.id4 == "") ? ((this.id3 == null  ||  this.id3 == "") ? this.id2 : this.id3) : this.id4));

		selectedScrID = this.id;		
		
		if (selectedTopID == "")
		{
			selectedTopID = ((this.id4 == null  ||  this.id4 == "") ? ((this.id3 == null  ||  this.id3 == "") ? this.id2 : this.id3) : this.id4);
		}

		fraTop.document.frmList.showMdiBody.value = "true";


		isClicked_MDI = "true";

		fraTop.toggle(objTREE[1]);
		
		isClicked_MDI = "false";


		fraTop.document.frmList.showMdiBody.value = "false";
	}

	
	focusTab(this.id, this.id2, this.id3, this.id4, false, false);
}

/*
 * 모든 화면 닫기
 */
function Js_closeAllTab()
{
	if (confirm("잠금되어 있지않은 모든 화면을 닫습니다."))
	{
		var tabList    = new Array(tabRow.cells.length);
		var tabCloseYN = new Array(tabRow.cells.length);

		for (var i = 0;  i < tabRow.cells.length;  i++)
		{
			tabList[i]    = tabRow.cells[i].id;
			tabCloseYN[i] = tabRow.cells[i].lock;
		}

		for (var i = 0;  i < tabList.length;  i++)
		{
			if (tabCloseYN[i] == "N")
				deleteTab(tabList[i]);
		}
	}
}

/*
 * 탭에 포커스를 준다.
 * @param   scrID
 * @param   scrID2
 * @param   scrID3
 * @param   scrID4
 * @param   refresh
 * @param   init
 */
function focusTab(scrID, scrID2, scrID3, scrID4, refresh, init)
{
	Debug("focusTab scrID[" + scrID + "] scrID2[" + scrID2 + "] scrID3[" + scrID3 + "] scrID4[" + scrID4 + "] refresh[" + refresh + "] init[" + init + "]");

	try
	{
		//열려있는 탭을 다시 눌렀을때
		if (currentScrID == scrID  &&  refresh == false)
			return;

		pop_MouseLeftPan.hide();


		/*****탭 설정*******/
		//존재하지 않을경우
		if (!isExistTab(scrID))
		{
			Debug("!isExistTab()");
			var obj = getExistTab(""); //첫번째 열려있는 화면 가져오기
			scrID = obj.id;
		}
		else
		{
			Debug("isExistTab()");
			if (currentScrID != scrID  &&  refresh != true  &&  isExistTab(currentScrID))
				getExistTab(scrID).before = currentScrID; //이전 탭의 ID
		}

		currentScrID = scrID; //현재 탭의 ID를 이전탭으로 저장
		Debug("currentScrID [" + currentScrID + "]");
		Debug("scrID [" + scrID + "]");


		/*****탭화면 설정******/
		for (var i = 0;  i < divMain.children.length;  i++)
		{
			//Focus-in 된 화면
			if (divMain.children[i].id == scrID)
			{
				divMain.children[i].style.width  = "100%";
				divMain.children[i].style.height = "100%";

				//새로고침 여부
				if (refresh == true)
				{
					var srcText = divMain.children[i].srcText;
					divMain.children[i].src = srcText;
				}
			}
			//Focus-out된 화면 처리
			else if (divMain.children[i].id != "")
			{
				divMain.children[i].style.width  = "0%";
				divMain.children[i].style.height = "0%";
			}
			else if (menuCnt == 0)
			{
				divMain.children[i].outerHTML = "<IFRAME width='0%' scrolling='auto' height='0%' frameBorder='no'></IFRAME>";
			}
		}

		Debug("탭화면 설정 complete");

		/*****탭 설정******/
		for (var i = 0;  i < tabRow.cells.length;  i++)
		{
			var obj = tabRow.cells[i];

			//포커스된 탭
			if (obj.id == scrID)
			{
				obj.isFocus = true;
			}
			//숨기탭
			else
			{
				obj.isFocus = false;
			}
		}

		Debug("탭 설정 complete");

		Debug("Js_AutoTabStyle() >>>");
		Js_AutoTabStyle();
		Debug("Js_AutoTabStyle() <<<");

		Debug("Js_chgTargetName() >>>");
		Js_chgTargetName();
		Debug("Js_chgTargetName() <<<");
	}
	catch (e)
	{
		//
	}
}

/**
 * 해당 탭을 삭제
 * @param   scrID
 * @param   isFocus
 */
function deleteTab(scrID, isFocus)
{
	if (scrID == "")
	{
		if (menuCnt > 0)
			alert("일치되는 탭화면이 없습니다.");

		return;
	}

	var beforeScrID  = "";
	var beforeScrID2 = "";
	var beforeScrID3 = "";
	var beforeScrID4 = "";

	for (var i = 0;  i < tabRow.cells.length;  i++)
	{
		if (tabRow.cells[i].id == scrID)
		{
			tabRow.deleteCell(i);

			if (i == 0)
			{
				beforeScrID  = "";
				beforeScrID2 = "";
				beforeScrID3 = "";
				beforeScrID4 = "";
			}
			else
			{
				beforeScrID  = tabRow.cells[i - 1].id;   //화면상에서 바로 앞에 위치하는 탭
				beforeScrID2 = tabRow.cells[i - 1].id2;  //화면상에서 바로 앞에 위치하는 탭
				beforeScrID3 = tabRow.cells[i - 1].id3;  //화면상에서 바로 앞에 위치하는 탭
				beforeScrID4 = tabRow.cells[i - 1].id4;  //화면상에서 바로 앞에 위치하는 탭
			}

			break;
		}
	}

	for (var i = 0;  i < divMain.children.length;  i++)
	{
		if (divMain.children[i].id == scrID)
		{
			//초기화
			divMain.children[i].id           = "";
			divMain.children[i].style.width  = "0%";
			divMain.children[i].style.height = "0%";
			divMain.children[i].before       = "";
			divMain.children[i].src          = "about:blank";
			divMain.children[i].outerHTML    = "<IFRAME width='0%' scrolling='auto' height='0%' frameBorder='no'></IFRAME>";

			break;
		}
	}

	// isFocus가 t/f값 또는 스트링으로도 들어올 수 있음.
	if (menuCnt > 1 && isFocus !=false && isFocus !="false")
	{
		if (isFocus == true  ||  isFocus == "true")
		{
			focusTab(beforeScrID, beforeScrID2, beforeScrID3, false);
		}
		// isFocus undefined
		else
		{
			focusTab("", "", "", false);
		}
	}
	else if (menuCnt <= 1)
	{
		currentScrID = "";
	}

	pop_MouseLeftPan.hide();
	menuCnt--;
}

/**
 * 모든 탭을 삭제
 */
function deleteAllTab()
{
	try
	{
		var tabRowCnt = tabRow.cells.length;

		for (var i = 0;  i < tabRowCnt;  i++)
		{
			tabRow.deleteCell(0);
		}

		for (var i = 0;  i < divMain.children.length;  i++)
		{
			//초기화
			divMain.children[i].id           = "";
			divMain.children[i].style.width  = "0%";
			divMain.children[i].style.height = "0%";
			divMain.children[i].before       = "";
			divMain.children[i].src          = "about:blank";
			divMain.children[i].outerHTML    = "<IFRAME width='0%' scrolling='auto' height='0%' frameBorder='no'></IFRAME>";
		}

		pop_MouseLeftPan.hide();
	}
	catch (e)
	{
		//
	}
}

/**
 *  잠김탭을 제외한 제일 처음 탭을 삭제한다. (MAXMDI개수를 초과했을 때)
 */
function Js_autoDeleteTab()
{
	for (var i = 0;  i < tabRow.cells.length;  i++)
	{
		if (tabRow.cells[i].lock == "N")
		{
			deleteTab(tabRow.cells[i].id, false);
			return true;
		}
	}

	alert("메뉴가 너무 많이 열려 있고, 모두 잠금 상태입니다.");
	return false;
}

/**
 *  Popup 메뉴등에서 target을 줘서 post방식으로 submit할 때,
 *  화면이 여러개 띄워져 있는 경우, 프레임 이름의 중복으로 인해
 *  엉뚱한 target으로 submit되는 것을 방지하기 위해서
 *  현재 화면을 제외한 열려있는 모든 화면의 프레임의 이름을 임시로 바꿔놓는 메소드
 *  현재화면을 바꿀 때마다, 호출한다.
 */
function Js_chgTargetName()
{
	for (var i = 0;  i < document.frames.length;  i++)
	{
		for (var j = 0;  j < document.frames[i].frames.length;  j++)
		{
			if (document.frames[i].frames[j].copyname == null)
				document.frames[i].frames[j].copyname = document.frames[i].frames[j].name;

			if ('MainFrm' + currentScrID == document.frames[i].name)
			{
				document.frames[i].frames[j].name = document.frames[i].frames[j].copyname;
			}
			else
			{
				if (document.frames[i].name.substring(0,7) == 'MainFrm')
				{
					document.frames[i].frames[j].name = document.frames[i].name + document.frames[i].frames[j].copyname;
				}
			}
		}
	}
}

/**
 *  Tab의 타이틀을 바꾸는 메소드
 */
function Js_chgTabTitle()
{
	if (isTitleView)
	{
		//거래 코드명 이미지로
		isTitleView = false;
		titleMode.src = titleMode.codeview;
	}
	else
	{
		//거래명 이미지로
		isTitleView = true;
		titleMode.src = titleMode.nameview;
	}

	for (var i = 0;  i < tabRow.cells.length;  i++)
	{
		/*탭의 디자인*/
		var obj = tabRow.cells[i];

		if (isTitleView)
		{
			obj.all.TAB_NAME.innerText = limitLength(obj.id);
		}
		else
		{
			obj.all.TAB_NAME.innerText = limitLength(obj.menuDesc);
		}
	}
}

/*
 * 선택된 탭 스타일과 나머지 스타일 적용
 */
function Js_AutoTabStyle()
{
	for (var i = 0;  i < tabRow.cells.length;  i++)
	{
		var obj = tabRow.cells[i];

		//포커스된 탭
		if (obj.isFocus == true)
		{
			obj.all.TAB_LEFT.src       = obj.all.TAB_LEFT.focus;
			obj.all.TAB_NAME.className = "Mdi_sel";

			if (obj.lock == 'Y')
				obj.all.TAB_RIGHT.src = obj.all.TAB_RIGHT.lockfocus;
			else
				obj.all.TAB_RIGHT.src = obj.all.TAB_RIGHT.focus;
		}
		//숨긴 탭
		else
		{
			obj.all.TAB_LEFT.src       = obj.all.TAB_LEFT.blur;
			obj.all.TAB_NAME.className = "Mdi_disel";

			if (obj.lock == 'Y')
				obj.all.TAB_RIGHT.src = obj.all.TAB_RIGHT.lockblur;
			else
				obj.all.TAB_RIGHT.src = obj.all.TAB_RIGHT.blur;
		}
	}
}

/**
 * 탭을 잠금처리
 * @param   scrID
 * @param   isLock
 */
function Js_lockThisTab(scrID, isLock)
{
	pop_MouseLeftPan.hide();

	var tab = getExistTab(scrID);
	if (tab != null)
	{
		tab.lock = isLock;
		Js_AutoTabStyle();
	}
}

/**
 * 왼쪽 메뉴 서식
 */
function Js_showMouseLeftMenu()
{
	var isFocus;

	//포커스 돼있는 탭
	if (this.id == currentScrID)
	{
		isFocus = true;
	}
	else
	{
		isFocus = false;
	}
	
	var strContents;
		
	if (isTitleView)
	{
		strContents = this.id;
	}
	else
	{
		strContents = this.menuDesc;
	}

	var textHtml =
		"<div id='Layer1' width='100%' height='100%'>" +
		"<TABLE cellSpacing='1' cellPadding='7' bgColor='#898888' border='0' width='100%' >" +
		"		<TR>" +
		"			<TD bgColor='#e7e7e7'>" +
		"				<TABLE cellSpacing='0' cellPadding='0' width='100%' height='100%' border='0' style='cursor:hand;'>" +
		"					<TR>" +
		"						<TD class='MdiWindow_disel' onmouseover='this.className=\"MdiWindow_sel\"' onmouseout='this.className=\"MdiWindow_disel\"' onclick='top.deleteTab(\"" + this.id + "\", \"" + isFocus + "\");'>" + strContents + " 화면 닫기</TD>" +
		"					</TR>" +
		"					<TR>" +
		"						<TD class='MdiWindow_disel' onmouseover='this.className=\"MdiWindow_sel\"' onmouseout='this.className=\"MdiWindow_disel\"' onclick='top.focusTab(\"" + this.id + "\", " + "\"" + this.id2 + "\", \"" + this.id3 + "\", \"" + this.id4 + "\", true);'>" + strContents + " 새로고침</TD>" +
		"					</TR>" +
		"					<TR>" +
		"						<TD class='MdiWindow_disel' onmouseover='this.className=\"MdiWindow_sel\"' onmouseout='this.className=\"MdiWindow_disel\"' onclick='top.Js_closeAllTab();'>모든화면 닫기</TD>" +
		"					</TR>" +
		"					<TR>";

	if (this.lock == 'N')
		textHtml += "			<TD class='MdiWindow_disel' onmouseover='this.className=\"MdiWindow_sel\"' onmouseout='this.className=\"MdiWindow_disel\"' onclick='top.Js_lockThisTab(\"" + this.id + "\", \"Y\");'>" + strContents + "&nbsp;잠금설정</TD>";
	else
		textHtml += "			<TD class='MdiWindow_disel' onmouseover='this.className=\"MdiWindow_sel\"' onmouseout='this.className=\"MdiWindow_disel\"' onclick='top.Js_lockThisTab(\"" + this.id + "\", \"N\");'>" + strContents + "&nbsp;잠금해제</TD>";

	textHtml += "			</TR>" +
		"				</TABLE></TD>" +
		"		</TR>" +
		"	</TABLE>" +
		"</div>"

	pop_MouseLeftPan.document.body.innerHTML = textHtml;

	var iX = 0;
	var iY = 0;

	try
	{
		iX = event.clientX;
		iY = event.clientY;
	}
	catch (e)
	{
		iX = 0;
		iY = 0;
	}

	pop_MouseLeftPan.show(iX, document.body.clientHeight - 105, 350, 105, document.body);

	return false;
}

pop_MouseLeftPan.document.createStyleSheet('/resource/css/mdi.css');

/**
 * onmouseover 이벤트 발생시 거래명 full name 보여주기
 */
function Js_showTooltip()
{
	var strTooltip = "";
	
	if (isTitleView)
	{
		strTooltip = this.id;
	}
	else
	{
		strTooltip = this.menuDesc;
	}
	
	var textHtml =
		"<div id='Layer2' width='100%' height='100%'>" +
		"   <TABLE cellSpacing='1' cellPadding='1' bgColor='#000000' border='0' width='100%' style='cursor:pointer;'>" +
		"		<TR>" +
		"			<TD bgColor='#FFFFC0';>" + strTooltip + "</font></TD>" +
		"		</TR>" +
		"	</TABLE>" +
		"</div>"

	var iX = 0;
	var iY = 0;
	var iOffSet = 20;

	try
	{
		iX = event.clientX + 5;
		iY = event.clientY - event.offsetY - 23;
	}
	catch (e)
	{
		iX = 0;
		iY = 0;
	}

	var iWidth;
	var iHeight = 20;

	//거래명의 길이에 따라 width결정
	if (isKorean(strTooltip))
	{
		iWidth = strTooltip.length * 14;
	}
	else
	{
		iWidth = getByteLength(strTooltip) * 8;
	}

	pop_MouseTooltip.document.body.innerHTML = textHtml;

	pop_MouseTooltip.show(iX, iY, iWidth, iHeight, document.body);

	return false;
}

pop_MouseTooltip.document.createStyleSheet('/resource/css/mdi.css');

/**
 * onmouseout 이벤트 발생시 거래명 full name 숨기기
 */
function Js_hideTooltip()
{
	pop_MouseTooltip.hide();
}

/**
 * 한글만 입력 되었는지 확인한다.
 * @param   string
 * @return  boolean
 */
function isKorean(str)
{
	for (var i = 0;  i<str.length;  i++)
	{
		if (!((str.charCodeAt(i) > 0x3130  &&  str.charCodeAt(i) < 0x318F)  ||  (str.charCodeAt(i) >= 0xAC00  &&  str.charCodeAt(i) <= 0xD7A3)))
		{
			return false;
		}
	}

	return true;
}

/**
 * 문자열의 byte length를 얻는다.
 * @param   string
 * @return  byte length
 */
function getByteLength(str)
{
	if (str == "")
	{
		return  0;
	}

	var len = 0;

	for (var i = 0;  i < str.length;  i++)
	{
		if (str.charCodeAt(i) > 128)
		{
			len++;
		}
		len++;
	}

	return  len;
}

/**
 * 탭 이름의 길이를 MaxTextByte로 제한하여 자른다.
 * @param   str
 * @return  string
 */
function limitLength(str)
{
	var byteSize = getByteLength(str);

	if (byteSize > MaxTextByte)
	{
		var subStr = subByte(str, 0, MaxTextByte) + LimitPattern;
		return subStr;
	}
	else
		return str;
}

/**
 * string을 지정한 범위의 byte길이만큼 자른다.
 * @param   str
 * @param   start
 * @param   end
 * @return  string
 */
function subByte(str, start, end)
{
	var reLength = 0;
	var sReturn  = "";
	var i;

	if (str == null)
		return null;

	for (i = 0;  i < str.length;  i++)
	{
		if (reLength < start)
			continue;

		if (reLength >= end)
			break;

		sReturn += str.substring(i, i + 1);

		var one = str.charCodeAt(i);

		if (one > 999)
			reLength += 2;
		else
			reLength++;
	}

	return sReturn;
}